Atomic operations library
From Cppreference
< cpp
The atomic library provides components for fine-grained atomic operations allowing for lockless concurrent programming. Each atomic operation is indivisible with regards to any other atomic operation that involves the same object.
| Defined in header
<atomic> | |||
Atomic types | |||
| atomic class template and specializations for bool, integral, and pointer types (class template) | ||
| checks if the atomic type's operations are lock-free (function template) | ||
Operations on atomic types | |||
| atomically replaces the value of the atomic object with a non-atomic argument (function template) | ||
| atomically obtains the value stored in an atomic object (function template) | ||
| atomically replaces the value of the atomic object with non-atomic argument and returns the old value of the atomic (function template) | ||
| atomically compares the value of the atomic object with non-atomic argument and performs atomic exchange if equal or atomic load if not (function template) | ||
| adds a non-atomic value to an atomic object and obtains the previous value of the atomic (function template) | ||
| subtracts a non-atomic value from an atomic object and obtains the previous value of the atomic (function template) | ||
| replaces the atomic object with the result of logical AND with a non-atomic argument and obtains the previous value of the atomic (function template) | ||
| replaces the atomic object with the result of logical OR with a non-atomic argument and obtains the previous value of the atomic (function template) | ||
| replaces the atomic object with the result of logical XOR with a non-atomic argument and obtains the previous value of the atomic (function template) | ||
Flag type and operations | |||
| the lock-free boolean atomic type (class) | ||
| atomically sets the flag to true and returns its previous value (function) | ||
| atomically sets the value of the flag to false (function) | ||
Initialization | |||
| non-atomic initialization of a default-constructed atomic object (function template) | ||
| constant initialization of an atomic variable of static storage duration (function macro) | ||
| initializes an std::atomic_flag to false (macro constant) | ||
Memory synchronization ordering | |||
| defines memory ordering constraints for the given atomic operation (typedef) | ||
| removes the specified object from the std::memory_order_consume dependency tree (function template) | ||
| generic memory order-dependent fence synchronization primitive (function) | ||
| fence between a thread and a signal handler executed in the same thread (function) | ||